#ifndef CONTEXTO_H_
#define CONTEXTO_H_

#include "Prediccion.h"
#include "BloqueTexto.h"
#include "Compresion.h"

/*
 * Clase que contiene una coleccion limitada de
 * Predicciones. Cada contexto no necesita saber
 * a que par de caracteres corresponde ya que de
 * eso se encarga el índice.
 */
class Contexto
{
	private:
		Prediccion *predicciones[4];
		short size;
		short maxSize;
		
	public:
		Contexto();
		Contexto(int maxSiz);
		virtual ~Contexto();
	
		short getSize() { return size; } 		
		/*
		 *  Devuelve la primer predicción de la colección.
		 */
		Prediccion* getPrimerPrediccion() {return predicciones[0];}
		Prediccion* getPrediccionEnPos(int pos) {return predicciones[pos];}
		
		/*
		 * Busca dentro de la coleccion de Predicciones si hay alguna
		 * que apunte al mismo caracter pasado por parametro.
		 */
		int buscarPosMatch(char car, BloqueTexto bloque);
		void posicionarCabeza(int posCab);
		void reordenar();
		void sumarPuntaje(int pos, int puntaje);
		bool estaLLena() { return size == maxSize;}
		
		/*
		 * Agrega una predicción apuntando a la posición del bloque pasada por
		 * parametro. Se agrega la nueva predicción al final de la lista de predicciones.
		 */
		void addPrediccion(int posPrediccion);
};

#endif /*CONTEXTO_H_*/
